using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.IO;
using CrystalDecisions.CrystalReports;
using System.Data.SqlClient;

public partial class ReporteFacturas : System.Web.UI.Page
{
    ReportDocument reportDoc = new ReportDocument();
    protected void Page_Load(object sender, EventArgs e)
    {
        mostrarReporte();
    }
    
    protected void ib_cancelar_Click(object sender, ImageClickEventArgs e)
    {
        tb_nroFactura.Text = string.Empty;
        tb_marca.Text = string.Empty;
        tb_modelo.Text = string.Empty;
        tb_nombreProducto.Text = string.Empty;
        tb_proveedor.Text = string.Empty;
        tb_ordenCompra.Text = string.Empty;
        
        mostrarReporte();
    }
    //Muesta en el reporte el producto con los datos indicados
    protected void mostrarReporte()
    {
        try
        {
            String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection conexion = new SqlConnection(cadena);
            string consulta = "";
            string concatena = "";
            SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
            int num = 0;

            if (tb_nroFactura.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT  Facturas_Compras.cod_orden_compra, Facturas_Compras.cod_proveedor, Facturas_Compras.nro_factura_compra, Facturas_Compras.fecha, Facturas_Compras.total_exento, Facturas_Compras.total_gravado, Facturas_Compras.importe_total, Facturas_Compras.importe_total_me, Facturas_Compras.cod_tipo_moneda, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Personas.nombres, Personas.apellidos, Detalles_Facturas_Compras.cod_factura_compra, Detalles_Facturas_Compras.nro_renglon, Detalles_Facturas_Compras.cod_producto, Detalles_Facturas_Compras.cantidad, Detalles_Facturas_Compras.costo_unitario, Detalles_Facturas_Compras.importe_exento, Detalles_Facturas_Compras.importe_gravado, Detalles_Facturas_Compras.importe_me, Facturas_Compras.cod_factura_compra AS Expr1, Productos.nombre, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Familias_Productos.iva, Proveedores.nro_documento FROM  Detalles_Facturas_Compras JOIN Facturas_Compras ON Detalles_Facturas_Compras.cod_factura_compra = Facturas_Compras.cod_factura_compra JOIN Productos ON Detalles_Facturas_Compras.cod_producto = Productos.cod_producto  JOIN  Proveedores ON Facturas_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN  Personas ON Personas.nro_documento = Proveedores.nro_documento AND Personas.cod_tipo_documento = Proveedores.cod_tipo_documento  JOIN  Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN  Modelo_Productos ON Modelo_Productos.cod_modelo = Productos.cod_modelo JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto " +
                        "WHERE Facturas_Compras.nro_factura_compra like '" + tb_nroFactura.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Facturas_Compras.nro_factura_compra like '" + tb_nroFactura.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_ordenCompra.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT  Facturas_Compras.cod_orden_compra, Facturas_Compras.cod_proveedor, Facturas_Compras.nro_factura_compra, Facturas_Compras.fecha, Facturas_Compras.total_exento, Facturas_Compras.total_gravado, Facturas_Compras.importe_total, Facturas_Compras.importe_total_me, Facturas_Compras.cod_tipo_moneda, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Personas.nombres, Personas.apellidos, Detalles_Facturas_Compras.cod_factura_compra, Detalles_Facturas_Compras.nro_renglon, Detalles_Facturas_Compras.cod_producto, Detalles_Facturas_Compras.cantidad, Detalles_Facturas_Compras.costo_unitario, Detalles_Facturas_Compras.importe_exento, Detalles_Facturas_Compras.importe_gravado, Detalles_Facturas_Compras.importe_me, Facturas_Compras.cod_factura_compra AS Expr1, Productos.nombre, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Familias_Productos.iva, Proveedores.nro_documento FROM  Detalles_Facturas_Compras JOIN Facturas_Compras ON Detalles_Facturas_Compras.cod_factura_compra = Facturas_Compras.cod_factura_compra JOIN Productos ON Detalles_Facturas_Compras.cod_producto = Productos.cod_producto  JOIN  Proveedores ON Facturas_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN  Personas ON Personas.nro_documento = Proveedores.nro_documento AND Personas.cod_tipo_documento = Proveedores.cod_tipo_documento  JOIN  Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN  Modelo_Productos ON Modelo_Productos.cod_modelo = Productos.cod_modelo JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto " +
                    "WHERE Facturas_Compras.cod_orden_compra= " + tb_ordenCompra.Text;
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Facturas_Compras.cod_orden_compra= " + tb_ordenCompra.Text;
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_marca.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT  Facturas_Compras.cod_orden_compra, Facturas_Compras.cod_proveedor, Facturas_Compras.nro_factura_compra, Facturas_Compras.fecha, Facturas_Compras.total_exento, Facturas_Compras.total_gravado, Facturas_Compras.importe_total, Facturas_Compras.importe_total_me, Facturas_Compras.cod_tipo_moneda, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Personas.nombres, Personas.apellidos, Detalles_Facturas_Compras.cod_factura_compra, Detalles_Facturas_Compras.nro_renglon, Detalles_Facturas_Compras.cod_producto, Detalles_Facturas_Compras.cantidad, Detalles_Facturas_Compras.costo_unitario, Detalles_Facturas_Compras.importe_exento, Detalles_Facturas_Compras.importe_gravado, Detalles_Facturas_Compras.importe_me, Facturas_Compras.cod_factura_compra AS Expr1, Productos.nombre, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Familias_Productos.iva, Proveedores.nro_documento FROM  Detalles_Facturas_Compras JOIN Facturas_Compras ON Detalles_Facturas_Compras.cod_factura_compra = Facturas_Compras.cod_factura_compra JOIN Productos ON Detalles_Facturas_Compras.cod_producto = Productos.cod_producto  JOIN  Proveedores ON Facturas_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN  Personas ON Personas.nro_documento = Proveedores.nro_documento AND Personas.cod_tipo_documento = Proveedores.cod_tipo_documento  JOIN  Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN  Modelo_Productos ON Modelo_Productos.cod_modelo = Productos.cod_modelo JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto " +
                    "WHERE Marcas.descripcion like '" + tb_marca.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Marcas.descripcion like '" + tb_marca.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_nombreProducto.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT  Facturas_Compras.cod_orden_compra, Facturas_Compras.cod_proveedor, Facturas_Compras.nro_factura_compra, Facturas_Compras.fecha, Facturas_Compras.total_exento, Facturas_Compras.total_gravado, Facturas_Compras.importe_total, Facturas_Compras.importe_total_me, Facturas_Compras.cod_tipo_moneda, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Personas.nombres, Personas.apellidos, Detalles_Facturas_Compras.cod_factura_compra, Detalles_Facturas_Compras.nro_renglon, Detalles_Facturas_Compras.cod_producto, Detalles_Facturas_Compras.cantidad, Detalles_Facturas_Compras.costo_unitario, Detalles_Facturas_Compras.importe_exento, Detalles_Facturas_Compras.importe_gravado, Detalles_Facturas_Compras.importe_me, Facturas_Compras.cod_factura_compra AS Expr1, Productos.nombre, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Familias_Productos.iva, Proveedores.nro_documento FROM  Detalles_Facturas_Compras JOIN Facturas_Compras ON Detalles_Facturas_Compras.cod_factura_compra = Facturas_Compras.cod_factura_compra JOIN Productos ON Detalles_Facturas_Compras.cod_producto = Productos.cod_producto  JOIN  Proveedores ON Facturas_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN  Personas ON Personas.nro_documento = Proveedores.nro_documento AND Personas.cod_tipo_documento = Proveedores.cod_tipo_documento  JOIN  Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN  Modelo_Productos ON Modelo_Productos.cod_modelo = Productos.cod_modelo JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto " +
                    "WHERE Productos.nombre like '" + tb_nombreProducto.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Productos.nombre= " + tb_nombreProducto.Text;
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }

            }
            if (tb_proveedor.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT  Facturas_Compras.cod_orden_compra, Facturas_Compras.cod_proveedor, Facturas_Compras.nro_factura_compra, Facturas_Compras.fecha, Facturas_Compras.total_exento, Facturas_Compras.total_gravado, Facturas_Compras.importe_total, Facturas_Compras.importe_total_me, Facturas_Compras.cod_tipo_moneda, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Personas.nombres, Personas.apellidos, Detalles_Facturas_Compras.cod_factura_compra, Detalles_Facturas_Compras.nro_renglon, Detalles_Facturas_Compras.cod_producto, Detalles_Facturas_Compras.cantidad, Detalles_Facturas_Compras.costo_unitario, Detalles_Facturas_Compras.importe_exento, Detalles_Facturas_Compras.importe_gravado, Detalles_Facturas_Compras.importe_me, Facturas_Compras.cod_factura_compra AS Expr1, Productos.nombre, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Familias_Productos.iva, Proveedores.nro_documento FROM  Detalles_Facturas_Compras JOIN Facturas_Compras ON Detalles_Facturas_Compras.cod_factura_compra = Facturas_Compras.cod_factura_compra JOIN Productos ON Detalles_Facturas_Compras.cod_producto = Productos.cod_producto  JOIN  Proveedores ON Facturas_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN  Personas ON Personas.nro_documento = Proveedores.nro_documento AND Personas.cod_tipo_documento = Proveedores.cod_tipo_documento  JOIN  Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN  Modelo_Productos ON Modelo_Productos.cod_modelo = Productos.cod_modelo JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto " +
                    "WHERE Proveedores.nombre_empresa like '" + tb_proveedor.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Proveedores.nombre_empresa like '" + tb_proveedor.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }

            }
            if (tb_modelo.Text != string.Empty)
            {
                if (num == 0)
                {
                    consulta = "SELECT DISTINCT  Facturas_Compras.cod_orden_compra, Facturas_Compras.cod_proveedor, Facturas_Compras.nro_factura_compra, Facturas_Compras.fecha, Facturas_Compras.total_exento, Facturas_Compras.total_gravado, Facturas_Compras.importe_total, Facturas_Compras.importe_total_me, Facturas_Compras.cod_tipo_moneda, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Personas.nombres, Personas.apellidos, Detalles_Facturas_Compras.cod_factura_compra, Detalles_Facturas_Compras.nro_renglon, Detalles_Facturas_Compras.cod_producto, Detalles_Facturas_Compras.cantidad, Detalles_Facturas_Compras.costo_unitario, Detalles_Facturas_Compras.importe_exento, Detalles_Facturas_Compras.importe_gravado, Detalles_Facturas_Compras.importe_me, Facturas_Compras.cod_factura_compra AS Expr1, Productos.nombre, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Familias_Productos.iva, Proveedores.nro_documento FROM  Detalles_Facturas_Compras JOIN Facturas_Compras ON Detalles_Facturas_Compras.cod_factura_compra = Facturas_Compras.cod_factura_compra JOIN Productos ON Detalles_Facturas_Compras.cod_producto = Productos.cod_producto  JOIN  Proveedores ON Facturas_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN  Personas ON Personas.nro_documento = Proveedores.nro_documento AND Personas.cod_tipo_documento = Proveedores.cod_tipo_documento  JOIN  Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN  Modelo_Productos ON Modelo_Productos.cod_modelo = Productos.cod_modelo JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto " +
                    "WHERE  Modelo_Productos.descripcion like '" + tb_modelo.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
                    num++;
                }
                else
                {
                    concatena = " AND Modelo_Productos.descripcion like '" + tb_modelo.Text + "%'";
                    da = new System.Data.SqlClient.SqlDataAdapter(consulta + " " + concatena, conexion);
                    num++;
                }
            }
            if (tb_nroFactura.Text.Equals("") && tb_ordenCompra.Text.Equals("") && tb_marca.Text.Equals("") && tb_nombreProducto.Text.Equals("") && tb_proveedor.Text.Equals(""))
            {
                consulta = "SELECT DISTINCT  Facturas_Compras.cod_orden_compra, Facturas_Compras.cod_proveedor, Facturas_Compras.nro_factura_compra, Facturas_Compras.fecha, Facturas_Compras.total_exento, Facturas_Compras.total_gravado, Facturas_Compras.importe_total, Facturas_Compras.importe_total_me, Facturas_Compras.cod_tipo_moneda, Marcas.descripcion AS Marca, Modelo_Productos.descripcion AS Modelo, Personas.nombres, Personas.apellidos, Detalles_Facturas_Compras.cod_factura_compra, Detalles_Facturas_Compras.nro_renglon, Detalles_Facturas_Compras.cod_producto, Detalles_Facturas_Compras.cantidad, Detalles_Facturas_Compras.costo_unitario, Detalles_Facturas_Compras.importe_exento, Detalles_Facturas_Compras.importe_gravado, Detalles_Facturas_Compras.importe_me, Facturas_Compras.cod_factura_compra AS Expr1, Productos.nombre, Proveedores.nombre_empresa, Proveedores.direccion_empresa, Proveedores.telefono_empresa, Familias_Productos.iva, Proveedores.nro_documento FROM  Detalles_Facturas_Compras JOIN Facturas_Compras ON Detalles_Facturas_Compras.cod_factura_compra = Facturas_Compras.cod_factura_compra JOIN Productos ON Detalles_Facturas_Compras.cod_producto = Productos.cod_producto  JOIN  Proveedores ON Facturas_Compras.cod_proveedor = Proveedores.cod_proveedor JOIN  Personas ON Personas.nro_documento = Proveedores.nro_documento AND Personas.cod_tipo_documento = Proveedores.cod_tipo_documento  JOIN  Marcas ON Productos.cod_marca = Marcas.cod_marca JOIN  Modelo_Productos ON Modelo_Productos.cod_modelo = Productos.cod_modelo JOIN  Familias_Productos ON Productos.cod_familia_producto = Familias_Productos.cod_familia_producto ";
                da = new System.Data.SqlClient.SqlDataAdapter(consulta, conexion);
            }
            DataSet DataSet_Factura = new DataSet();
            da.Fill(DataSet_Factura, "Factura");
            reportDoc.Load(Server.MapPath("~/Reportes/ReporteFactura.rpt"));
            reportDoc.SetDataSource(DataSet_Factura.Tables["Factura"]);
            Reporte_Factura.ReportSource = reportDoc;
            Reporte_Factura.RefreshReport();
        }
        catch (Exception error)
        {
            error.ToString();
        }
    }
    protected void ib_reporte_Click(object sender, ImageClickEventArgs e)
    {
        mostrarReporte();
    }
}
